package org.dromara.business.modules.favorites.service;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import org.dromara.business.modules.favorites.domain.bo.BuFavoritesBo;
import org.dromara.business.modules.favorites.domain.vo.BuFavoritesVo;
import org.dromara.business.modules.favorites.domain.vo.MyCountVo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;

/**
 * 用户收藏Service接口
 *
 * @author ckk
 * @date 2025-11-12
 */
public interface IBuFavoritesService {

    /**
     * 分页查询用户收藏列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 用户收藏分页列表
     */
    TableDataInfo<BuFavoritesVo> queryPageList(BuFavoritesBo bo, PageQuery pageQuery);

    /**
     * 新增用户收藏
     *
     * @param bo 用户收藏
     * @return 是否新增成功
     */
    Boolean insertByBo(BuFavoritesBo bo);

    MyCountVo myCount();

    Boolean isFavorites(@NotEmpty(message = "主键不能为空") Long id);

    void cancel(@NotNull(message = "主键不能为空") Long targetId);

}
